﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ProDivingAdmin2salmon14
{
    public delegate void DelegateShowJudgeForm();
   
    public interface IContest
    {
        void NextDive();
        void DQDiver(Diver diver);
        Diver GetCurrentDiver();
        Diver GetNextDiver();
        DiverList GetDiverList();
        DiverList GetListOfDivers();
        int GetCurrentDive();
        int GetAmountOfJudges();
        void ResetData(bool female, int minAge, int divingHeight, int judges, string diversPath, string judgesPath, string filePath);
        List<Judge> GetConnectedJudgeList();
        List<DisplayDive> GetDiverOrder();
        bool GetIsNextDive();
        bool GetIsDone();
        void AddDiverToList(Diver diver);
        void AddDiveToDiver(Diver diver, Dive dive);
        void EditDiver(int diverIndx, Diver newDiver);
        void EditDiveToDiver(Diver diver, Dive newDive, int diveIndx);
        List<Dive> GetDiveListFromDiver(Diver diver);
        void DeleteDiveFromDiver(Diver diver, int index);
        int GetAmountOfDives();
        void SendDive(string diveCode);
        void GetJudgeIDs(string[] ids);
        void ResetConnectedJudgesScore();

        void SetContestName(string contestName);
        string GetContestName();

        int GetDiveOrderCounter();

        void DiveOrderCounterIncrement();

        string GetFilePath();

        void SetFilePath(string filePath);

        List<Judge> GetJudgeList();

        void BackupJudgeList();

        void DeleteJudgeFromList(int id);

        void EditJudge(int judgeIndex, Judge newJudge);

        void SetAmountOfJudges(int amountOfJudges);

        void ReorderJudgeList();

        event DelegateShowJudgeForm EventShowJudgeForm;
    }
}
